// 引入MVVM工具包相关命名空间
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
// 引入模型类
using MiniTheme.Models;
// 引入服务接口
using MiniTheme.Services.Interfaces;

namespace MiniTheme.ViewModels;

// 主题视图模型类，负责管理主题切换相关的状态和行为
public partial class ThemeViewModel : ObservableObject
{
    // 主题服务接口，用于管理主题相关操作
    private readonly IThemeService _themeService;

    // 当前选中的主题模式
    [ObservableProperty]
    private ThemeMode _selectedThemeMode;
    // 构造函数，初始化主题视图模型
    public ThemeViewModel(IThemeService themeService)
    {
        // 注入主题服务
        _themeService = themeService;
        // 获取当前主题模式
        _selectedThemeMode = _themeService.GetCurrentThemeMode();
    }

    // 通用主题设置命令，根据主题模式字符串设置主题
    [RelayCommand]
    private void SetTheme(string themeModeString)
    {
        // 将字符串转换为ThemeMode枚举
        if (Enum.TryParse<ThemeMode>(themeModeString, out var themeMode))
        {
            // 更新选中的主题模式
            SelectedThemeMode = themeMode;
            // 应用指定主题
            _themeService.ApplyTheme(themeMode);
        }
    }
}